package com.example.lib.extend

import android.content.Context
import com.google.gson.Gson
import com.example.lib.utils.event.EventBusEnum
import com.example.lib.utils.event.EventBusMessage
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import kotlin.coroutines.CoroutineContext

/**
 * 获取设备宽度（px）
 */
fun getDeviceWidth(context: Context): Int {
    return context.resources.displayMetrics.widthPixels
}

/**
 * 获取设备高度（px）
 */
fun getDeviceHeight(context: Context): Int {
    return context.resources.displayMetrics.heightPixels
}


fun startBlocking(
    context: CoroutineContext = Dispatchers.Main,
    invoke: suspend CoroutineScope.() -> Unit
) {
    CoroutineScope(context).launch {
        invoke.invoke(this)
    }
}

fun registerEventBus(tag: Any) {
    if (EventBus.getDefault().isRegistered(tag).not()) EventBus.getDefault().register(tag)
}

fun unRegisterEventBus(tag: Any) {
    if (EventBus.getDefault().isRegistered(tag)) EventBus.getDefault().unregister(tag)
}

fun sendDefaultEvent(bean: EventBusMessage) {
    EventBus.getDefault().post(bean)
}

fun sendDefaultEvent(type: EventBusEnum) {
    EventBus.getDefault().post(EventBusMessage(type = type))
}

fun Any?.toJsonString(): String {
    return if (this == null) ""
    else Gson().toJson(this)
}
